A conventional web page comprises content in a markup language, such as Hypertext Markup Language (HTML) or eXtensible Hypertext Markup Language (XHTML), which is suitable for rendering by a web browser. Some web pages are static—i.e., a piece of constant, unchanging HTML or XHTML content may be stored in a file that can be downloaded to a client machine and displayed on a browser. However, most commercial web content, such as content provided by search sites, portal sites, E-commerce sites, is not static, but rather is generated dynamically so that it can be personalized for the user or generated in response to some input from the user.
Dynamically-generated content is generated by a program designed for that purpose. Such a program is a module of executable or interpretable code that creates content according to set of rules or procedures. For example, when a user transmits a query to a search engine site, the search engine consults various sources (e.g., databases of known web pages) to produce results, and then a content-generating program at the search engine site generates a page of HTML content that includes the results, and transmits that page to the user. Clearly, such a results page must be generated dynamically, since the content of the results page will differ depending upon what query the user has submitted.
While existing software is effective at dynamically generating web content, such software suffers from a lack of flexibility when there is a creative change to the content that the program needs to produce. For example, a search engine may use a program that displays search results as a list of the titles of web pages that the search engine has located. However, if the operator of the search engine wishes to introduce a new way of presenting these results (e.g., enhancing the list with thumbnail images of the located web pages), in general the only way to accomplish this change is to rewrite the program (or, at least, to add code to the program that supports inclusion of the thumbnail images).
Most web content can be viewed as being built from modular “building blocks” of smaller pieces of content. For example, a search results page is made up of various separate pieces of content (e.g., a logo, a copyright notice, the results of the most recent search, a search box for entering another search query, advertisements, etc.). In theory, the modular nature of web content suggests that a single program could drive the content generation process, by building content from modular building blocks that the content designer would provide at run time. A creative change to the content would not necessitate a change to such a program, since the program could simply be directed to use different building blocks to produce different content. However, conventional content-generation software is extremely limited in terms of what types of created changes can be made to the content without changing the software itself.
In view of the foregoing, there is a need for a system that overcomes the drawbacks of the prior art.